package libs

import (
	"github.com/duanshanghanqing/godash"
	"github.com/spf13/viper"
	"log"
	"path"
)

func getEnv(rootDirName string) (env string, err error) {
	// 工作目录
	rootPath, err := godash.GetRootPath(rootDirName)
	if err != nil {
		return "", err
	}

	v := viper.New()
	//设置配置文件类型，可选
	v.SetConfigType("yaml")
	v.SetConfigFile(path.Join(rootPath, "env.yaml"))

	// 读取配置文件
	if err = v.ReadInConfig(); err != nil {
		return "", err
	}

	return v.GetString("env"), nil
}

func init() {
	AppConfig.Name = "order-srv" // 主要用于根据应用名称读取配置

	env, err := getEnv(AppConfig.Name)
	if err != nil {
		print("读取环境变量失败,请检测env.yaml配置文件")
		return
	}

	if err = configInit(env); err != nil {
		log.Fatalf("初始化配置失败, %v", err)
		return
	}

	if err = logInit(); err != nil {
		log.Fatalf("初始化日志失败, %v", err)
		return
	}

	if err = snowflakeInit(); err != nil {
		log.Fatalf("初始化雪花算法失败, %v", err)
		return
	}

	if err = mysqlInit(); err != nil {
		log.Fatalf("初始化mysql失败, %v", err)
		return
	}

	if err = redisInit(); err != nil {
		log.Fatalf("初始化redis失败, %v", err)
		return
	}

	if err = redsyncInit(); err != nil {
		log.Fatalf("初始化redsync失败, %v", err)
		return
	}

	if err = tracerInit(); err != nil {
		log.Fatalf("初始化tracer失败, %v", err)
		return
	}
}
